package reflect;

import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URISyntaxException;

public class Test3 {
    public static void main(String[] args) throws URISyntaxException, ClassNotFoundException, InvocationTargetException, IllegalAccessException, InstantiationException {
        //先通过Test3类定位它所在的路径
        File dir=new File(Test3.class.getResource(".").toURI());
        //获取包名
        String packName=Test3.class.getPackage().getName();
        //获取该路径下所有的.class文件
        File[] files=dir.listFiles(f->f.getName().endsWith(".class"));
        //遍历文件数组，获取每个类对象
        for(File file:files){
           String fileName= file.getName();
           String className=fileName.substring(0,fileName.indexOf("."));
           Class cls=Class.forName(packName+"."+className);
           Object obj=cls.newInstance();
           Method[] methods=cls.getDeclaredMethods();
           for (Method method:methods){
               if (method.getName().contains("s")
               && method.getParameterCount()==0){
                   System.out.println("包含s的无参方法所在类："+className);
                   System.out.println("包含s的方法名："+method.getName());
                   method.invoke(obj);
               }

           }

        }

    }
}
